// File: jmcomic-core/src/main/java/dev/jukomu/jmcomic/downloader/JustDownloadSpecificCountImage.java
package dev.jukomu.jmcomic.downloader;

import dev.jukomu.jmcomic.entity.JmImageDetail;
import dev.jukomu.jmcomic.option.JmOption;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * 对应Python的JustDownloadSpecificCountImage，只下载特定数量图片的下载器，用于测试。
 */
public class JustDownloadSpecificCountImage extends JmDownloader {

    private final AtomicInteger count; // 使用AtomicInteger确保线程安全

    /**
     * 构造函数。
     *
     * @param option 下载选项。
     * @param count  要下载的图片数量。
     */
    public JustDownloadSpecificCountImage(JmOption option, int count) {
        super(option);
        this.count = new AtomicInteger(count);
    }

    @Override
    public void downloadByImageDetail(JmImageDetail image) {
        // 确保目录被创建
        option.decideImageFilepath(image);

        if (tryCountdown()) {
            super.downloadByImageDetail(image);
        } else {
            // 达到数量限制后，不再下载，但仍标记为成功以完成流程
            afterImage(image, image.getSavePath());
        }
    }

    /**
     * 尝试对计数器进行减一操作。
     *
     * @return 如果计数器在减一前大于0，则返回 true。
     */
    private boolean tryCountdown() {
        return count.getAndDecrement() > 0;
    }
}